package cn.edu.nuc.bre.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

import cn.edu.nuc.bre.dto.QueryHandler;
import cn.edu.nuc.bre.entity.TransType;
import cn.edu.nuc.bre.service.interfaces.TransTypeService;
import cn.edu.nuc.bre.util.PageInfo;
import cn.edu.nuc.bre.util.ValidateUtil;

/**
 * 事务类型控制器
 * 
 * @author 郑温冬
 *
 */
@Controller
@Scope("prototype")
public class TransTypeAction extends ActionSupport {

	/**
	 * 序列化id
	 */
	private static final long serialVersionUID = 1L;

	/**
	 * 事务类型业务实现
	 */
	@Autowired
	private TransTypeService transTypeService;

	/**
	 * 当前页
	 */
	private Integer targetPage;
	
	/**
	 * 事务类型id
	 */
	private Integer ttypeid;
	
	/**
	 * 事务类型名称
	 */
	private String ttname;

	public TransTypeService getTransTypeService() {
		return transTypeService;
	}

	public void setTransTypeService(TransTypeService transTypeService) {
		this.transTypeService = transTypeService;
	}

	public Integer getTargetPage() {
		return targetPage;
	}

	public void setTargetPage(Integer targetPage) {
		this.targetPage = targetPage;
	}
	
	public Integer getTtypeid() {
		return ttypeid;
	}
	
	public void setTtypeid(Integer ttypeid) {
		this.ttypeid = ttypeid;
	}
	
	public String getTtname() {
		return ttname;
	}
	
	public void setTtname(String ttname) {
		this.ttname = ttname;
	}
	
	/**
	 * 校验事务类型增加
	 */
	public void validateAddTransType() {
		
		//事务类型输入了空格或根本没输入
		if (!ValidateUtil.isNotNullOrSpace(ttname)) {
			this.addFieldError("msg", "<font color='red'>事务类型名称是必填项请不要输入空格！</font>");
		}
	}
	
	/**
	 * 添加事务类型
	 * @return
	 */
	public String addTransType() {
		
		//设置参数
		TransType transType = new TransType();
		transType.setTtname(ttname);
		transType.setTtstate(1);
		
		//执行增加操作
		if (transTypeService.add(transType)) {
			return "success";
		}
		
		//如果不成功添加失败信息
		this.addFieldError("msg", "<font color='red'>增加失败!</font>");
		return "input";
	}

	/**
	 * 分页查询事务类型
	 * 
	 * @return
	 */
	public String listTransType() {

		// 如果没有设置页号则默认访问第一页
		if (targetPage == null) {
			targetPage = 1;
		}

		// 设置查询条件(要求必须是未禁用的类型，每页查询5条记录)
		QueryHandler queryHandler = QueryHandler.creat().andColumnMark("ttstate", "!=", "0");
		queryHandler.OrderByDESC("ttypeid");
		queryHandler.limit(targetPage, 5);
		queryHandler.set(); //查询之前要执行set方法生成查询用的sql语句

		// 执行查询
		PageInfo<TransType> pageInfo = transTypeService.findByQueryHandler(queryHandler);

		// 保存结果集到值栈
		ActionContext.getContext().put("pageInfo", pageInfo);

		return "success";
	}
	
	/**
	 * 校验删除参数
	 */
	public void validateDeleteTransType() {
		
		//如果没有ttypeid说明出错了
		if (ttypeid == null) {
			this.addFieldError("msg", "<font color='red'>出错了，请重新尝试操作，如果多次操作失败请联系超级管理员！</font>");
		}
	}
	
	/**
	 * 删除事务类型
	 * @return
	 */
	public String deleteTransType() {
		
		if (transTypeService.delete(ttypeid)) {
			return "success";
		}
		
		//如果删除失败跳转到input视图
		this.addFieldError("msg", "<font color='red'>删除失败！</font>");
		return "input";
	}

}
